package com.browsesoft.htmlcomponent;

import org.w3c.dom.Element;
import org.w3c.dom.Text;

import com.browsesoft.ExtendElement;
import com.browsesoft.resource.Resource;
import com.browsesoft.resource.ResourceTreeComponent;

/**
 * 功能树组件
 */
public class HTMLMainPageTreeComponent extends ResourceTreeComponent {
	/**
	 * 构造器
	 * 
	 * @param parent
	 *            组件的父组件
	 * @throws Exception
	 */
	public HTMLMainPageTreeComponent(HTMLBasicComponent parent)
			throws Exception {
		super(parent);
	}

	/**
	 * 设置内容节点属性
	 * 
	 * @param nodeLink
	 *            内容节点
	 * @param node
	 *            内容节点的父亲节点
	 * @param modelNode
	 *            对应的model
	 */
	protected void setContextNode(Element nodeLink, Element node,
			Object modelNode) throws Exception {
		super.setContextNode(nodeLink, node, modelNode);
		// 是叶子节点
		if (((HTMLTreeModel) model).getChildNodes(modelNode).size() == 0) {
			Resource resource = (Resource) modelNode;
			// 得到Function的链接
			String str = (String) resource.getAttributes().get("link");
			str = getLink(str);
			// 有功能链接
			if (str != null) {
				// 替换onclick中的link
				String onclick = nodeLink.getAttribute("onclick");
				onclick = onclick.replaceFirst("link", str);
				// 得到功能类型
				String type = (String) resource.getAttributes()
						.get("showmodel");
				// 如果类型为空,在新窗口中打开
				if (type == null) {
					onclick = onclick.replaceFirst("right", "_blank");
				}
				// 如果类型为弹出,在新窗口中打开
				else if (type != null
						&& (type.equals("弹出") || type.equals("最大化") || type.equals("spring"))) {
					onclick = onclick.replaceFirst("right", "_blank");
				} else if (type != null && type.equals("正常")) {
					onclick = onclick.replaceFirst("openMaxWindow",
							"window.open");
					onclick = onclick.replaceFirst("right", "_blank");
				}
				// 如果类型为右边,在框架右边打开
				else if (type != null && (type.equals("右边")|| type.equals("right"))) {
					onclick = onclick.replaceFirst("openMaxWindow",
							"window.open");
				}
				nodeLink.setAttribute("onclick", onclick);
			}
			// 否则，没有功能链接
			else {
				nodeLink.removeAttribute("onclick");
				nodeLink.setAttribute("href", "####");
			}
		} else {
			nodeLink.setAttribute("href", "####");
		}
		// 设置节点文本
		Text name = this.getPage().getDocument().createTextNode(
				((HTMLTreeModel) model).getName(modelNode));
		ExtendElement.replaceElementContext(nodeLink, name);
	}

	/**
	 * 处理得到的link
	 */
	private String getLink(String str) {
		if (str == null) {
			return null;
		}
		if (str.lastIndexOf('?') != -1) {
			str = str + "&window=mainright";
			return str;
		} else {
			str = str + "?window=mainright";
			return str;
		}
	}
}
